package biz.datalk.industrialland.admin.modules.system.service;

import biz.datalk.industrialland.admin.modules.system.pojo.dto.SysDepartDTO;
import biz.datalk.industrialland.admin.modules.system.pojo.vo.SysDepartVO;
import biz.datalk.industrialland.common.result.UnifyResult;

import java.util.List;

/**
 * @author tarofang@163.com
 * @date 2019-09-08
 */
public interface ISysDepartService {
    UnifyResult list(SysDepartDTO sysDepartDTO);

    UnifyResult add(SysDepartDTO sysDepartDTO);

    UnifyResult update(SysDepartDTO sysDepartDTO);

    UnifyResult batchDelete(SysDepartDTO sysDepartDTO);

    List<SysDepartVO> tree(SysDepartDTO sysDepartDTO);

    void delete(SysDepartDTO sysDepartDTO);

    /**
     * 生成部门编码
     *
     * @author       tarofang@163.com
     * @date 2020年05月27日
     * 
     *
     * @param pid 父级部门ID 若无传 null
     * @return 部门编码
     */ 
    String genOrgCode(Long pid);

    /**
     * 获取树形所有的有效数据
     * @param sysDepartDTO
     * @return
     */
    List<SysDepartVO> treeAll(SysDepartDTO sysDepartDTO);

    List<SysDepartVO> pkgTreeData(List<SysDepartVO> list, SysDepartVO parent);
}
